package com.nexgo.payment.trans.settle;

import com.nexgo.payment.BaseTransPresenter;
import com.nexgo.payment.BaseTransView;
import com.nexgo.payment.constrant.SettleOpType;
import com.nexgo.payment.databases.SettleInfo;

/**
 * 结算相关接口
 *
 * @author 谭忠扬-YuriTam
 * @time 2017年08月29日
 */
public class SettleContract {

    interface View extends BaseTransView<Presenter> {

        /**
         * 结算完成返回签退
         */
        void intent2Logout();

        /**
         * 初始化数据
         *
         * @param sumInfo     汇总数据
         * @param isCountDown 是否启动倒计时器标识
         */
        void showStatistics(SettleInfo sumInfo, boolean isCountDown);

        /**
         * 结算失败
         */
        void showSettleFail();

        /**
         * 提示无交易记录
         */
        void showNoTransRecord();

        /**
         * 结算成功
         */
        void showSettleSuccessfully();

        /**
         * 提示是否打印明细弹出层
         * @param isErr 是否失败明细
         */
        void showWhetherPrintTransDetail(boolean isErr);

        /**
         * 打印机初始化失败
         */
        void showPrintInitErr();

        /**
         * 打印弹出层
         *
         * @param active
         */
        void setPrintingIndicator(boolean active);

        /**
         * 打印成功
         */
        void showPrintSuccessfully();

        /**
         * 打印缺纸
         *
         * @param isRePrint 是否重打印标识
         * @param opType    结算界面操作类型,为 null 表示当前是在打印明细
         */
        void showPrintLackPaper(boolean isRePrint, SettleOpType opType);

        /**
         * 打印失败
         *
         * @param failDesc 描述信息
         */
        void showPrintFail(String failDesc);
    }

    interface Presenter extends BaseTransPresenter {

        /**
         * 开始结算
         */
        void doSettle();

        /**
         * 开始打印结算单
         *
         * @param isRePrint 是否重打印标识
         */
        void startPrintSettle(boolean isRePrint);

        /**
         * 打印交易明细
         * @param isErr
         */
        void startPrintTransDetail(boolean isErr);

        /**
         * 开始打印交易汇总单
         */
        void startPrintSum();

        /**
         * 取消明细打印
         */
        void cancelPrintDetail();

        /**
         * 继续明细打印
         */
        void continuePrintDetail();
    }
}
